#ifndef DURATIONCARRIER_HPP
#define DURATIONCARRIER_HPP

#include <QString>
#include <QList>
#include <QJsonObject>
#include <QJsonArray>
#include <QPair>
#include <QVariant>  // 如果要放进 QVariant，或者用 Q_DECLARE_METATYPE，需要包含

struct DurationCarrier {
    QString folder;
    QList<QPair<QString, QList<double>>> nodeDurations;

    DurationCarrier() = default;

    DurationCarrier(const QString &folder_,
                    const QList<QPair<QString, QList<double>>> &nodeDurations_)
        : folder(folder_), nodeDurations(nodeDurations_) {}

    // 如果需要相等比较（例如在 QList<DurationCarrier> 里做 contains / indexOf / removeAll 等）
    // 建议加上 operator==，以便编译器可以找到。
    bool operator==(const DurationCarrier &other) const {
        // 简单比较：folder 和 nodeDurations 都相等就认为相等
        return (this->folder == other.folder
                && this->nodeDurations == other.nodeDurations);
    }

    // 可根据需要添加 JSON 转换或其它接口
    QJsonObject toJson() const {
        QJsonObject obj;
        obj["folder"] = folder;

        QJsonArray nodeArray;
        for (auto &pair : nodeDurations) {
            QJsonObject nodeObj;
            nodeObj["node"] = pair.first;

            QJsonArray durationArr;
            for (double d : pair.second) {
                durationArr.append(d);
            }
            nodeObj["durations"] = durationArr;

            nodeArray.append(nodeObj);
        }
        obj["nodeDurations"] = nodeArray;

        return obj;
    }
};

Q_DECLARE_METATYPE(DurationCarrier)

#endif // DURATIONCARRIER_HPP
